const api = require('../../utils/api.js');

Page({
  data: {
    loginType: 'password', // 'password' 或 'wechat'
    identifier: '', // 手机号或邮箱
    password: '',
    showPassword: false,
    loading: false,
    wechatLoading: false,
    agreed: false
  },

  onLoad(options) {
    // 检查是否已经登录
    const token = api.getAccessToken();
    if (token) {
      this.checkTokenValid();
    }
  },

  // 检查token是否有效
  async checkTokenValid() {
    try {
      const res = await api.getUserInfo();
      if (res.code === 200) {
        // token有效，直接跳转到首页
        wx.switchTab({
          url: '/pages/index/index'
        });
      }
    } catch (error) {
      console.log('Token无效，需要重新登录');
    }
  },

  // 切换到密码登录
  switchToPassword() {
    this.setData({
      loginType: 'password'
    });
  },

  // 切换到微信登录
  switchToWechat() {
    this.setData({
      loginType: 'wechat'
    });
  },

  // 账号输入
  onIdentifierInput(e) {
    this.setData({
      identifier: e.detail.value
    });
  },

  // 密码输入
  onPasswordInput(e) {
    this.setData({
      password: e.detail.value
    });
  },

  // 切换密码显示
  togglePasswordVisibility() {
    this.setData({
      showPassword: !this.data.showPassword
    });
  },

  // 处理密码登录
  async handlePasswordLogin() {
    if (!this.data.agreed) {
      wx.showToast({
        title: '请先同意用户协议和隐私政策',
        icon: 'none'
      });
      return;
    }

    if (!this.data.identifier || !this.data.password) {
      wx.showToast({
        title: '请输入账号和密码',
        icon: 'none'
      });
      return;
    }

    this.setData({ loading: true });

    try {
      const res = await api.login(this.data.identifier, this.data.password);
      
      if (res.code === 200) {
        wx.showToast({
          title: '登录成功',
          icon: 'success'
        });

        // 保存用户信息到本地
        wx.setStorageSync('user_type', res.data.user_type);
        
        // 延迟跳转，让用户看到成功提示
        setTimeout(() => {
          wx.switchTab({
            url: '/pages/index/index'
          });
        }, 1500);
      } else {
        wx.showToast({
          title: res.msg || '登录失败',
          icon: 'none'
        });
      }
    } catch (error) {
      console.error('登录失败:', error);
      wx.showToast({
        title: error.message || '网络错误，请重试',
        icon: 'none'
      });
    } finally {
      this.setData({ loading: false });
    }
  },

  // 处理微信登录
  async handleWechatLogin(e) {
    if (!this.data.agreed) {
      wx.showToast({
        title: '请先同意用户协议和隐私政策',
        icon: 'none'
      });
      return;
    }

    if (e.detail.errMsg !== 'getUserInfo:ok') {
      wx.showToast({
        title: '用户取消授权',
        icon: 'none'
      });
      return;
    }

    this.setData({ wechatLoading: true });

    try {
      // 获取微信用户信息
      const userInfo = e.detail.userInfo;
      
      // 获取微信登录凭证
      const loginRes = await this.getWechatCode();
      
      // 调用后端微信登录接口（需要后端支持）
      const res = await this.wechatLogin(loginRes.code, userInfo);
      
      if (res.code === 200) {
        wx.showToast({
          title: '登录成功',
          icon: 'success'
        });

        // 保存用户信息
        wx.setStorageSync('user_type', 'wechat');
        wx.setStorageSync('userInfo', userInfo);
        
        setTimeout(() => {
          wx.switchTab({
            url: '/pages/index/index'
          });
        }, 1500);
      } else {
        wx.showToast({
          title: res.msg || '微信登录失败',
          icon: 'none'
        });
      }
    } catch (error) {
      console.error('微信登录失败:', error);
      wx.showToast({
        title: '微信登录失败，请重试',
        icon: 'none'
      });
    } finally {
      this.setData({ wechatLoading: false });
    }
  },

  // 获取微信登录凭证
  getWechatCode() {
    return new Promise((resolve, reject) => {
      wx.login({
        success: resolve,
        fail: reject
      });
    });
  },

  // 微信登录API调用（需要后端实现）
  wechatLogin(code, userInfo) {
    return new Promise((resolve, reject) => {
      wx.request({
        url: 'http://192.168.10.101:5000/api/login/wechat',
        method: 'POST',
        header: {
          'content-type': 'application/json'
        },
        data: {
          code: code,
          userInfo: userInfo
        },
        success: (res) => {
          if (res.data.code === 200) {
            // 保存token
            wx.setStorageSync('access_token', res.data.data.access_token);
            wx.setStorageSync('refresh_token', res.data.data.refresh_token);
          }
          resolve(res.data);
        },
        fail: reject
      });
    });
  },

  // 协议勾选
  onAgreementChange(e) {
    this.setData({
      agreed: e.detail.value.includes('agree')
    });
  },

  // 跳转到注册页面
  goToRegister() {
    wx.navigateTo({
      url: '/pages/register/register'
    });
  },

  // 跳转到忘记密码页面
  goToForgotPassword() {
    wx.showToast({
      title: '请联系客服重置密码',
      icon: 'none'
    });
  },

  // 显示用户协议
  showUserAgreement() {
    wx.showModal({
      title: '用户协议',
      content: '这里是用户协议内容...',
      showCancel: false
    });
  },

  // 显示隐私政策
  showPrivacyPolicy() {
    wx.showModal({
      title: '隐私政策',
      content: '这里是隐私政策内容...',
      showCancel: false
    });
  }
});